﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Domain;
using DAO;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using System.Collections.Generic;


public partial class m_Registracion : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    private void doRedirect()
    {
        // saneamiento

        long id = 0;
        if (Request.QueryString["id"] == null ||
            !long.TryParse(Request.QueryString["id"].ToString(), out id))
        {
            Response.Redirect(Utils.SecureRedirect("~/m_ManageSuscripciones_Mias.aspx"));
        }

        string page = null;
        if (Request.QueryString["t"] != null)
        {
            if (Request.QueryString["t"] == "e")
            {
                if (EmpresaDAO.Traer(id) == null)
                    Response.Redirect(Utils.SecureRedirect("~/m_ManageSuscripciones_Mias.aspx"));

                page = "m_EmpData.aspx";
            }
            else if (Request.QueryString["t"] == "p")
            {
                if (PublicacionDAO.Traer(id, null, null).Count() <= 0)
                    Response.Redirect(Utils.SecureRedirect("~/m_ManageSuscripciones_Mias.aspx"));

                page = "m_PublicacionData.aspx";
            }
        }

        Response.Redirect(Utils.SecureRedirect("~/" + page + "?id=" + id.ToString()));
    }

    protected void btn_registrar_Click(object sender, EventArgs e)
    {
        ul_mensajes.InnerHtml = string.Empty;

        long dni = 0;
        if (!long.TryParse(txt_dni.Text, out dni))
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "El DNI debe ser numérico y mayor a 7 dígitos" + "</li>";
            return;
        }

        Usuario usuario = new Usuario(dni,
                                      txt_pass.Text,
                                      txt_mail.Text,
                                      string.Empty,
                                      string.Empty,
                                      null,
                                      new List<Asociacion>(),
                                      new List<Consumo>());
        ValidationResults validaciones = Validation.Validate(usuario);
        if (validaciones.Count() != 0)
        {
            foreach (ValidationResult v in validaciones)
            {
                ul_mensajes.InnerHtml += "<li class='itemerror'>" + v.Message + "</li>";
            }

            return;
        }

        if (UsuarioDAO.Traer(usuario.UserName) != null)
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "El usuario ya existe" + "</li>";
            return;
        }

        if (!UsuarioDAO.Guardar(usuario))
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "Ocurrio un inconveniente. Intente nuevamente mas tarde" + "</li>";
            return;
        }

        Utils.operadorLogueado = UsuarioDAO.Traer(usuario.UserName);
        doRedirect();
    }
}
